#ifndef CASIDEEXCEPTION_H_
#define CASIDEEXCEPTION_H_

#include <cstring>
#include "../base/cobject.h"

using namespace std;

/**
 * CAsideException - base class for ASIDE exceptions
 * @author Michal Rost
 * @date 10.05.2007
 */
class CAsideException : public CObject {
public:
  CAsideException();
  CAsideException(string message);
  CAsideException(string exClassName, string exMethodName, string message="");
  CAsideException(string exClassName, string exMethodName, string message,
                  CAsideException* cause);
  virtual string getExMethodName() const;
  virtual string getExClassName() const;
  virtual string getMessage() const;
  virtual CAsideException* getCause() const;
  virtual string toString() const;
  static string getClassName() {
    static const string CLASS_NAME = "CAsideException";
    return CLASS_NAME;
  }
protected:
  string message;
  string exClassName;
  string exMethodName;
  CAsideException* cause;
};

#endif
